This invention relates, generally, to data processing systems and, more specifically, to a technique for scaling processor usage in a video conference system.
This application is copending and commonly assigned with the following U.S. patent applications all filed Oct. 24, 2000, the subject matters of which are incorporated herein by reference for all purposes, including the following:
U.S. patent application Ser. No. 09/695,193, entitled xe2x80x9cMethod and Apparatus for Providing Full Duplex and Multipoint IP Audio Streamingxe2x80x9d;
U.S. patent application Ser. No. 09/695,553, entitled xe2x80x9cMethod and Apparatus for Multi-mode IP Audio Streamingxe2x80x9d;
U.S. patent application Ser. No. 09/695,203, entitled xe2x80x9cMethod and Apparatus Two-way Distributed Audio Mixing of Multiway Callsxe2x80x9d.
Recently, systems for enabling audio and /or video conferencing of multiple parties over packet-switched networks, such as the Internet, have become commercially available. Such systems typically allow participants to simultaneously receive and transmit audio and/or video data streams depending on the sophistication of the system. Conferencing systems used over packet-switched networks have the advantage of not generating long-distance telephone fees and enable varying levels of audio, video, and data integration into the conference forum. In a typical system, a conference server receives audio and/or video streams from the participating client processes to the conference, mixes the streams and retransmits the mixed stream to the participating client processes. Except for cameras, displays and video capture cards most video conferencing systems are implemented in software.
Computer based video conferencing products that are implemented in software, are very CPU resource intensive applications. Traditionally these products have not been designed to accommodate a wide range of CPU processors and to operate in varying workloads conditions without negatively impacting the performance of other applications running on the system. The most CPU resource intensive part of video conferencing products is the act of compressing the video images for transmission on circuit-switched networks.
The present invention discloses a technique to control the CPU resource usage of a video conferencing product by dynamically varying the rate at which video images are compressed (video frame rate) in order to maintain a target level of CPU resource usage. The technique allows video conferencing products to dynamically slow or speed up the video frame rate based on the available CPU resource thus allowing them operate effectively on a wide range of system processors and under varying workload conditions, without negatively impacting other applications on the system, while, and at the same, time maximizing the user""s video conferencing experience. A front end control program module interfaces with the video encoder of the video conferencing system and first checks that the current CPU resource utilization is below a specified target threshold prior to compressing a video image from the fixed rate stream captured by the camera. If the current CPU resource utilization is above the target threshold, the video image is skipped to conserve CPU resources. If the current CPU resource utilization is below the target threshold, an estimate is made of the amount of CPU resources needed to compress the video image given the current level of CPU utilization, and, if the estimate is within a tolerable range of the target threshold, the video image is compressed and transmitted. In this manner, video images will be compressed and sent as fast as possible while maintaining the specified target CPU resource usage.
As an example of the above technique, if the target CPU resource usage threshold is set to 80%, indicating the CPU should not devote more that 80% of its resource to a video conferencing related processing, a video conferencing product implementing the invention will produce a xe2x80x9cfast as possiblexe2x80x9d video frame rate while still leaving 20% of free CPU resource for use by other applications on the system. On older slower processors, this technique will produce a slower video frame rate while leaving some free CPU resource for other applications. On newer faster processors, the video frame rate will be faster, but only up to the point where the specified CPU resource utilization target threshold is not exceeded. Similarly, as workload conditions for the CPU, the video frame rate will vary to accommodate the changing workload. As more applications are started on the processor, the video frame rate will slow down to maintain the CPU resource usage threshold. Then, as other applications terminate, the video frame rate will increase to utilize the recently freed CPU resource up to the specified target threshold.
According to a first aspect of the invention, in a computer system having a processor, a device for generating a stream of video data and a mechanism for compression of captured video data, a method for controlling processor utilization during a video conferencing session comprises: (A) comparing a current rate of processor utilization with a predefined threshold for processor utilization; and (B) preventing a captured portion of the video data from being processed by the compression mechanism, if compression of the captured portion of the video data would cause a future rate of processor utilization to exceed the predefined threshold for processor utilization. In one embodiment of the method limitation (B) further comprises: (B1) comparing a sum of the known rate of processor utilization and the current rate of processor utilization with the predefined threshold for processor utilization. In an alternative embodiment of the method limitation (B) comprises: (B1) comparing a difference of the known rate of processor utilization and the predefined threshold for processor utilization with the current rate of processor utilization.
According to a second aspect of the invention, in a computer system having a processor, a device for generating a stream of video data and a mechanism for compression of captured video data, a method for controlling processor utilization during a video conferencing session comprises: (A) determining a current rate of processor utilization; (B) comparing the current rate of processor utilization with a threshold for processor utilization; and (C) preventing a captured portion of the video data from being processed by the compression mechanism, if compression of the captured portion of the video data would cause a future rate of processor utilization to exceed the threshold for processor utilization.
According to a third aspect of the invention, in a computer system having a processor, a device for generating a stream of video data and a mechanism for compression of captured video data, a method for controlling processor utilization during a video conferencing session comprises: (a) receiving a request for a captured portion of the stream of video data; (b) determining a current rate of processor utilization; (c) comparing the current rate of processor utilization with the specified threshold for processor utilization; (d) preventing a portion of the stream of captured video data from being processed by the compression mechanism, if compression of the portion of the captured video data would cause the rate of processor utilization to exceed the specified threshold for processor utilization; and (e) repeating (b) through (d). In one embodiment of the method further comprises: (e) indicia identifying a specified threshold for processor utilization. In another embodiment of the method limitation (d) further comprises: (d1) providing a known rate of processor utilization for a known quantity of captured video data and (d2) comparing a sum of the known rate of processor utilization and the current rate of processor utilization with the threshold for processor utilization. In an alternative embodiment of the method limitation (d) further comprises: (d1) providing a known rate of processor utilization for a known quantity of captured video data and (d2) comparing a difference of the known rate of processor utilization and the threshold for processor utilization with the current rate of processor utilization.
According to a fourth aspect of the invention, a computer program product and data signal for use with a computer system having a processor, a device for generating a stream of video data and a mechanism for compression of captured video data, comprise: A) program code for receiving a request for a captured portion of the stream of video data; B) program code for determining a current rate of processor utilization; C) program code for comparing the current rate of processor utilization with the threshold for processor utilization; and D) program code for preventing a portion of the captured video data from being processed by the compression, if compression of the portion of the captured video data would cause the rate of processor utilization to exceed the threshold for processor utilization.
According to a fifth aspect of the invention, an apparatus for use with a computer system having a processor, a device for generating a stream of video data and a mechanism for compression of captured video data, comprises: (A) program logic configured to receive a request for a captured portion of the stream of video data; (B) program logic configured to determine a current rate of processor utilization; (C) program logic configured to compare the current rate of processor utilization with the threshold for processor utilization; and (D) program logic configured to prevent a portion of the captured video data from being processed by the compression mechanism, if compression of the portion of the captured video data would cause the rate of processor utilization to exceed the threshold for processor utilization.